前言

docker可以通过读取Dockerfile来自动构建镜像,但使用时必须遵守一定的规范和格式.关于Dockerfile指令介绍可以点我

简介

一个docker镜像是由一堆由下至上,只能读的层构成的,上一层是在下一层的基础上构建起来的,每一层对应一个Dockerfile的指令.让我们观察下这个Dockerfile:

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

每个指令创建一个层

  • FROMubuntu:18.04作为基础镜像
  • COPY 添加宿主机当前文件夹所有文件到docker容器/app目录下
  • RUN 编译/app下文件
  • CMD 当容器启动时执行的命令

当你运行一个镜像并且生成一个容器的时候,会在镜像最上面添加一层读写层.所有的操作包括文件修改,删除,新增都只发生在该读写层上面.

如果想更多的了解镜像层级关系,docker是怎么构建和存储镜像的,可以查看存储驱动

一般的建议和指导

构建最小化配置镜像

我们构建镜像,应该能快速停止,摧毁,重建,并且只需要极少的配置.其实很好理解,如果说你构建的镜像每次重新部署要配置一大堆东西,为啥还要镜像? 关于理论上的事情,大家可以参考Twelve-factor应用方法论

明白构建上下文

当你使用docker build命令时,包含Dockerfile的当前文件夹就称为构建环境(构建上下文).这个文件夹中的所有内容都会发送到docker deamon(docker的服务进程)中作为构建镜像的环境. 构建上下文案例一

  1. 创建一个文件夹作为构建上下文,并进入其中.

  2. 创建一个文件hello.txt,并写入hello world作为内容

  3. 创建Dockerfile文件,并且由它构建的镜像启动时执行cat命令

  4. 使用当前文件夹作为构建上下文,注意.表示当前文件夹

    mkdir myproject && cd myproject echo "hello" > hello.txt echo -e "FROM busybox\nCOPY /hello.txt /\nRUN cat /hello.txt" > Dockerfile docker build -t helloapp:v1 .

构建案例二 在案例一的基础上,把Dockerfilehello.txt文件分开.在使用docker build时,清除掉案例一的缓存,并指定Dockerfile文件的位置

mkdir -p dockerfiles context
mv Dockerfile dockerfiles && mv hello.txt context
docker build --no-cache -t helloapp:v2 -f dockerfiles/Dockerfile context

难点解析 echo -e表示启用转义字符,例如\n代表换行 COPY /hello.txt /把上下文环境中的hello.txt文件拷贝到镜像中,一定要注意COPY指令永远是从宿主机把文件拷贝到docker镜像中. --no-cache表示清除掉案例一的缓存 -f dockerfiles/Dockerfile context指定Dockerfile文件位置和上下文环境文件夹,一定要注意,docker build最后结尾一定是以上下文环境文件夹结尾.

当你不小心把非构建镜像必须的文件放入了上下文环境文件夹,会使得镜像变得更大,加载更慢.所以放入其中的文件一定要精简.当你在构建镜像的过程中,会出现类似下面这样的信息,显示你上下文的大小. Sending build context to Docker daemon 187.8MB

THE END
推荐文章
  • 微信公众号开发(2)-微信公众号验证逻辑

  • 鼓漱,让牙齿更强健

  • 黄帝内经-第32篇-刺热篇(2)

  • linux安装nodejs

  • 部署或移植网站的步骤

  • taro报错'View' cannot be used as a JSX component

  • 黄帝内经-第28篇-通评虚实论篇(2)

  • 写作前树立的观念-用户思维

评论 共0条
开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

新增

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

0字

新增

0字

0字

0字

0字

新增

0字

0字